home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3dm / old-compression / clQueryScheme.z / clQueryScheme
Encoding:
Text File  |  2002-10-03  |  5.7 KB  |  133 lines

  1.  
  2.  
  3.  
  4. ccccllllQQQQuuuueeeerrrryyyySSSScccchhhheeeemmmmeeee((((3333ddddmmmm))))                                          ccccllllQQQQuuuueeeerrrryyyySSSScccchhhheeeemmmmeeee((((3333ddddmmmm))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      clQueryScheme, clQueryMaxHeaderSize, clReadHeader - Determine the scheme
  10.      and read the stream header
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      ####iiiinnnncccclllluuuuddddeeee <<<<ddddmmmmeeeeddddiiiiaaaa////ccccllll....hhhh>>>>
  14.  
  15.      iiiinnnntttt ccccllllQQQQuuuueeeerrrryyyySSSScccchhhheeeemmmmeeee((((vvvvooooiiiidddd ****hhhheeeeaaaaddddeeeerrrr))))
  16.      iiiinnnntttt ccccllllQQQQuuuueeeerrrryyyyMMMMaaaaxxxxHHHHeeeeaaaaddddeeeerrrrSSSSiiiizzzzeeee((((iiiinnnntttt sssscccchhhheeeemmmmeeee))))
  17.      iiiinnnntttt ccccllllRRRReeeeaaaaddddHHHHeeeeaaaaddddeeeerrrr((((CCCCLLLLhhhhaaaannnnddddlllleeee hhhhaaaannnnddddlllleeee,,,, iiiinnnntttt hhhheeeeaaaaddddeeeerrrrSSSSiiiizzzzeeee,,,, vvvvooooiiiidddd ****hhhheeeeaaaaddddeeeerrrr))))
  18.  
  19. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  20.      _h_e_a_d_e_r         A pointer to a buffer containing at least 16 bytes of the
  21.                     header.
  22.  
  23.      _s_c_h_e_m_e         The decompression scheme to use.
  24.  
  25.      _h_a_n_d_l_e         A handle to the decompressor.
  26.  
  27.      _h_e_a_d_e_r_S_i_z_e     The maximum size of the header in bytes.
  28.  
  29.      _h_e_a_d_e_r         A pointer to a buffer containing the header.
  30.  
  31.      ccccllllQQQQuuuueeeerrrryyyySSSScccchhhheeeemmmmeeee attempts to determine the appropriate decompression scheme
  32.      from 16 bytes of the stream header.  It can be called before
  33.      ccccllllOOOOppppeeeennnnDDDDeeeeccccoooommmmpppprrrreeeessssssssoooorrrr to determine which scheme to use.
  34.  
  35.      Once the scheme has been determined, the handle can be opened and then
  36.      the header can be read using ccccllllRRRReeeeaaaaddddHHHHeeeeaaaaddddeeeerrrr.  The size of the header
  37.      information is obtained from ccccllllQQQQuuuueeeerrrryyyyMMMMaaaaxxxxHHHHeeeeaaaaddddeeeerrrrSSSSiiiizzzzeeee.
  38.  
  39.      ccccllllRRRReeeeaaaaddddHHHHeeeeaaaaddddeeeerrrr uses only the data in _h_e_a_d_e_r and does not depend on any
  40.      implicitly defined buffers.  This call will set up state parameters for
  41.      _h_a_n_d_l_e based on information available in the header.  The format of the
  42.      header is scheme-dependent and should not be accessed directly by the
  43.      application.
  44.  
  45.  
  46. RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEESSSS
  47.      On success, ccccllllQQQQuuuueeeerrrryyyySSSScccchhhheeeemmmmeeee returns the scheme identifier,
  48.      ccccllllQQQQuuuueeeerrrryyyyMMMMaaaaxxxxHHHHeeeeaaaaddddeeeerrrrSSSSiiiizzzzeeee returns the maximum size of the header, and
  49.      ccccllllRRRReeeeaaaaddddHHHHeeeeaaaaddddeeeerrrr returns the number of header bytes read for all cases except
  50.      for MPEG1, in which case it returns a value of 1. This is becuase many
  51.      different types of headers and much non-header information may need to be
  52.      read enroute to reading the relevant MPEG1 headers.  On failure, these
  53.      calls return negative error codes.
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ccccllllQQQQuuuueeeerrrryyyySSSScccchhhheeeemmmmeeee((((3333ddddmmmm))))                                          ccccllllQQQQuuuueeeerrrryyyySSSScccchhhheeeemmmmeeee((((3333ddddmmmm))))
  71.  
  72.  
  73.  
  74. EXAMPLE
  75.           #include <dmedia/cl.h>
  76.  
  77.           int decompressionScheme;
  78.            ...
  79.           /* Determine the scheme from the first 16 bytes of the header */
  80.           header = malloc(16);
  81.           read(inFile, header, 16);
  82.           decompressionScheme = clQueryScheme(header);
  83.           if(decompressionScheme < 0) {
  84.               fprintf(stderr, "Unknown scheme in stream header.");
  85.               exit(0);
  86.           }
  87.           free(header);
  88.  
  89.           /* Open the appropriate decompressor */
  90.           clOpenDecompressor(decompressionScheme, &decompressorHdl);
  91.  
  92.           /* Find out how much header information to provide */
  93.           headerSize = clQueryMaxHeaderSize(decompressionScheme);
  94.  
  95.           if(headerSize > 0) {
  96.  
  97.               /* Get the header data */
  98.               header = malloc(headerSize);
  99.               lseek(inFile, 0, SEEK_SET);
  100.               read(inFile, header, headerSize);
  101.  
  102.               /* Read the header */
  103.               clReadHeader(decompressorHdl, headerSize, header);
  104.               free(header);
  105.  
  106.               /* Reset the stream */
  107.               lseek(inFile, 0, SEEK_SET);
  108.           }
  109.            ...
  110.  
  111.  
  112. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  113.      CLintro(3dm), clOpenDecompressor(3dm)
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.